Raúl Caro
Title: https://jornadas.ccn-cert.cni.es/es/xviiijornadas-programa-general/xviii-jornadas-ccn-cert/ponencia/implantes-web-conoce-a-tu-enemigo-y-defiendete
- Ahondar en el concepto Implante Web
- Conocer tipos
- Entender perspectiva ofensiva
- Proponer estrategias de defensa y como protegernos
Que son los Implantes Web
graph LR
A[Arbitraty File Upload]
B[Initial Access]
C[Persistance]
D[Privilage Esclation]
E[Credential Acces]
F[LAtteral Movement]
Z[ ]
Y[ ]
A--> Z
Z --> B --> Y
Z --> C --> Y
Y --> D
Y --> E
Y --> F
WebShell
Ejecutar comando a nivel de sistema a través de la web. Por ejemplo con PHP
Tambien con JSP , y con ASP.NET, podemos ejecutar código.
El executor es el componente utilizado para la ejecución de código.
Contramedidas generales
-
Restringir y auditar la subida de archivos
-
Configurar los permisos de directorios
-
Limitar privilegios a los usuarios de servicios web
-
Monitorizar el despliegue de archivos sospechosos
-
Migrar a nuevas tecnologías que dificultan su explotación: Frameworks modernos ya los incorporan.
-
PHP:
disable_functions(php.ini)No son configuraciones definitivas, existen muchos más caminos.
-
JSP: definir directivas de bloqueo → en algunas aoplicaciones no son lo mejor pues no se configura correctamente. Con AppArmor si.
-
ASP.NET: definir reglas de AppLocker para bloquear la ejecución (Windows) Ej: restinge la ejecución de binarios.
La web shell no esta limitada. PHP ya tiene funciones que hacen que hagamos cosas por ejemplo leer archivos.
CONTRAMEDIDAS:
KRAKEN (php, jsp, ):
-
Reimplementaciíon nativa de comandos
-
Elevación de privilegios en diferentes ámbitos
Xon kRAKEN cargamos una herramienta de explotacion que nos dará acceso a la cuenta en el contexto privilegiado sin la necesidad de la ejecucuión.-
-
Suplantacion de contextos de seguridad
Con los proivilegios adecuados, poremos copiar el token del proceso de una identidad privilegiada, y podremos ejecutar a su nombre.
-
Ejecución de código no administrado: cargar funciones de la winappi u otras funcionalidades del sistema.
Para cargar los módulos de Kraken
El executor es el encargado de recibir ese codigo, interpretarlo, y darnos una respuesta:
| eval | ClassLoader | CSharpCodeProvider |
|---|
Conclusion
- Aplicar contramedidas generales
- Tiering Model y principio de nivel de privilegii
- Establecer medidas de detecciopn y montirorizacio n (EDR)
- Contenedores Docker, Distro-less envs, Hardenizacion
- Y sobretodo Inventarios Activos
Debemos dificultar lo suficiente el camino del atacante.